package com.whfc.fse.dao;

import com.whfc.fse.dto.FseGantryDTO;
import com.whfc.fse.entity.FseGantry;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface FseGantryMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(FseGantry record);

    int insertSelective(FseGantry record);

    FseGantry selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(FseGantry record);

    int updateByPrimaryKey(FseGantry record);

    /**
     * 根据平台和sn查找
     *
     * @param platform
     * @param sn
     * @return
     */
    FseGantry selectByPlatformAndSn(@Param("platform") String platform,
                                    @Param("sn") String sn);

    /**
     * 软删除
     *
     * @param gantryId
     */
    void del(Integer gantryId);

    /**
     * 龙门吊列表
     *
     * @param deptIds
     * @param keyword
     * @param bindFlag
     * @param netState
     * @return
     */
    List<FseGantryDTO> selectFseGantryByDeptId(@Param("deptIds") List<Integer> deptIds,
                                               @Param("keyword") String keyword,
                                               @Param("bindFlag") Integer bindFlag,
                                               @Param("netState") Integer netState);

    /**
     * 修改绑定状态
     *
     * @param gantryId
     * @param platform
     * @param bindFlag
     * @param sn
     * @param netState
     */
    void updateBindFlag(@Param("gantryId") Integer gantryId,
                        @Param("platform") String platform,
                        @Param("bindFlag") Integer bindFlag,
                        @Param("sn") String sn,
                        @Param("netState") Integer netState);

    /**
     * 更新所有塔机设备网络状态
     *
     * @param value
     */
    void updateAllDeviceNetState(Integer value);

    /**
     * 根据硬件编码和厂商查找设备
     *
     * @param sn
     * @param platform
     * @return
     */
    FseGantry selectBySnAndPlatform(@Param("sn") String sn, @Param("platform") String platform);

    /**
     * 根据平台获取sn
     *
     * @param platform 平台
     * @return sn
     */
    List<String> selectSnByPlatform(@Param("platform") String platform);

    /**
     * 查询所有龙门吊
     *
     * @return
     */
    List<FseGantry> selectAll();

}